namespace ShoppingCart.WebSite.Admin
{
    using System;
    using System.Web.UI;
    using System.Web.UI.WebControls;
    using Business.Logic;
    using Code;
    using DTO = Business.Entity;

    public partial class Productos : BasePage
    {
        protected void Page_Load(object sender, EventArgs e)
        {
            if (Page.IsPostBack) return;
            CargarProductos();
        }

        protected void GvProductosPageIndexChanging(object sender, GridViewPageEventArgs e)
        {
            gvProductos.PageIndex = e.NewPageIndex;
            CargarProductos();
        }

        protected void GvProductosRowCommand(object sender, GridViewCommandEventArgs e)
        {
            switch (e.CommandName)
            {
                case "Editar":
                    Response.Redirect(string.Format("Producto.aspx?IdProducto={0}&Accion=M", Convert.ToInt32(e.CommandArgument)), true);
                    break;
                case "Eliminar":
                    EliminarProducto(Convert.ToInt32(e.CommandArgument));
                    break;
            }
        }

        private void CargarProductos()
        {
            var entidades = ProductoManager.Instancia.Listar();
            BindControl<DTO.Producto>.BindGrid(gvProductos, entidades);
            litMensaje.Text = string.Empty;
        }

        private void EliminarProducto(int idProducto)
        {
            try
            {
                ProductoManager.Instancia.Eliminar(idProducto);
                CargarProductos();
                litMensaje.Text = GetMessage("Producto fue eliminado satisfactoriamente.", MessageType.success);
            }
            catch (Exception ex)
            {
                litMensaje.Text = GetMessage(ex.Message, MessageType.errormsg);
            }
        }
    }
}
